//class Solution {
//public:
//    string reverseOnlyLetters(string s) {
//        int begin = 0, end = s.size() - 1;
//        while (begin < end)
//        {
//            while (begin < end && !isalpha(s[begin])) begin++;
//            while (begin < end && !isalpha(s[end])) end--;
//            swap(s[begin++], s[end--]);
//        }
//        return s;
//    }
//};

//class Solution {
//public:
//    string minWindow(string s, string t) {
//        if (s.size() < t.size()) return "";
//        unordered_map<char, int> hash1;
//        unordered_map<char, int> hash2;
//        for (auto& e : t) hash2[e]++;
//        int left = 0, right = 0, count = 0;
//        string ret;
//        while (right < s.size())
//        {
//            hash1[s[right]]++;
//            if (hash1[s[right]] <= hash2[s[right]]) count++;
//            right++;
//            while (t.size() == count)
//            {
//                int len = right - left;
//                string str = s.substr(left, len);
//                if (ret == "") ret = str;
//                else
//                {
//                    if (str.size() < ret.size()) ret = str;
//                }
//                if (hash1[s[left]] <= hash2[s[left]]) count--;
//                hash1[s[left]]--;
//                left++;
//            }
//        }
//        return ret;
//    }
//};